package com.xiaoc.bulldozer.common.dao;

import com.xiaoc.bulldozer.common.dto.AwardStatisticsDto;
import com.xiaoc.bulldozer.common.dto.AwardStatisticsQueryDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * describe:
 *
 * @author lihuancheng
 * @date 2018/9/21
 */
public interface AwardStatisticsMapper {

    Integer getAwardCount(AwardStatisticsQueryDto awardStatisticsQueryDto);

    List<AwardStatisticsDto> getAwardListByCondition(AwardStatisticsQueryDto awardStatisticsQueryDto);

    Integer queryOpenAwardCountByUserId(Integer userId);

    Integer queryAwardCountByUserIdAndStatus(@Param("userId") Integer userId, @Param("status") Integer status);


    Integer sumAwardFeeByUserIdAndStatus(@Param("userId") Integer userId, @Param("status") Integer status);

    /**
     * 红包提现总金额
     *
     * @param userId
     * @param type
     * @return
     */
    Integer sumAwardOutFeeByUserIdAndType(@Param("userId") Integer userId, @Param("type") Integer type, @Param("balanceType") Integer balanceType);


    /**
     * 通过userIdList 查询开红包数
     *
     * @param userIdList
     * @return
     */
    List<AwardStatisticsDto> queryOpenAwardCountByUserIdList(@Param("userIdList") Set<Integer> userIdList);


    /**
     * 通过userIdList, status 查询获得红包数量
     *
     * @param userIdList
     * @param status
     * @return
     */
    List<AwardStatisticsDto> queryGetAwardCountByUserIdListAndStatus(@Param("userIdList") Set<Integer> userIdList, @Param("status") Integer status);


    /**
     * 通过userIdList, status  查询领取红包金额
     *
     * @param userIdList
     * @param status
     * @return
     */
    List<AwardStatisticsDto> sumAwardFeeByUserIdListAndStatus(@Param("userIdList") Set<Integer> userIdList, @Param("status") Integer status);


    /**
     * 通过userIdList, type  查询提现金额
     *
     * @param userIdList
     * @param type
     * @return
     */
    List<AwardStatisticsDto> sumAwardOutFeeByUserIdListAndType(@Param("userIdList") Set<Integer> userIdList, @Param("type") Integer type, @Param("balanceType") Integer balanceType);


    /**
     * 开红包数
     * @param queryDto
     * @return
     */
    List<AwardStatisticsDto> queryOpenAwardCount(AwardStatisticsQueryDto queryDto);


    /**
     * 开红包人数
     * @param queryDto
     * @return
     */
    List<AwardStatisticsDto> queryOpenAwardPersonCount(AwardStatisticsQueryDto queryDto);


    /**
     * 领取红包数
     * @param queryDto
     * @return
     */
    List<AwardStatisticsDto> queryGetAwardCount(AwardStatisticsQueryDto queryDto);

    /**
     * 领取红包总金额
     * @param queryDto
     * @return
     */
    List<AwardStatisticsDto> queryGetAwardSumFee(AwardStatisticsQueryDto queryDto);

    /**
     * 领取红包人数
     * @param queryDto
     * @return
     */
    List<AwardStatisticsDto> queryGetAwardPersonCount(AwardStatisticsQueryDto queryDto);

    /**
     * 红包提现总金额
     * @param queryDto
     * @return
     */
    List<AwardStatisticsDto> queryAwardOutSumFee(AwardStatisticsQueryDto queryDto);

    /**
     * 红包提现人数
     * @param queryDto
     * @return
     */
    List<AwardStatisticsDto> queryAwardOutPersonCount(AwardStatisticsQueryDto queryDto);


}
